AWS Amplify Gen 2 のバックエンド構成ファイル「amplify_outputs.json」と AWS リソースの関連付けを確認してみる

AWS Amplify Gen 2 のバックエンド構成ファイル「amplify_outputs.json」と AWS リソースの関連付けを確認してみる

Clock Icon2024.08.18

いわさです。

先日 AWS Amplify Gen 2 を使って、テンプレートか初歩的なアプリケーションのデプロイと、少しだけカスタマイズを行いました。

https://dev.classmethod.jp/articles/amplify-signup-domain-filter/

上記記事では Amplify Auth という認証コンポーネントを使っており、Amplify Auth の基盤は Cognito ユーザープールです。
Cognito ユーザープールリソースが作成されるのですが、何か2つ作成されていることに気が付きました。

F73FADD1-9962-4CAD-996E-717235E19A04_1_105_c.jpeg

そういえば運用環境の他にサンドボックスを作成していることに気が付きました。これか。

どのリソースがサンドボックス?

なんとなくチュートリアルの手順に従って動作させている状態だと、どのコードや設定ファイルがどこに関連付けされているのか全くわからないまま進んでいると思います。
Quickstart の序盤で Amplify コンソールから amplify_outputs.json というファイルをダウンロードし、動作確認させたことを覚えていますでしょうか。

A31AC920-9F56-4A73-AE6A-2AFFCBC36280_1_105_c.jpeg

Amplify でホスティングされるアプリケーションクライアントを介して、様々なバックエンドサービスに接続することになるのですが、そのバックエンドの構成情報やエンドポイントなどの設定が記された構成ファイルとなっています。
Quickstart テンプレートの場合は認証とデータについて始めから構成されており、認証は前述のとおり Cognito、そしてデータは AppSync と DynamoDB が使われています。

00BDFD5B-C411-4522-B1EE-F26529EF0E75.png

この構成ファイルの情報を基にどの AppSync リソースがアプリケーションと関連づいているのか、どの API キーが使われているのかなどを特定することが出来ました。

6E4B834C-62C8-4E38-A6CB-46141BD7B4E1.png

サンドボックス起動時にローカルの amplify_outputs.json は上書きされる

ただ、サンドボックスと運用環境でバックエンドリソース(Cognito ユーザープールや AppSync など)は違うものを使います。
今このローカル環境がどちらを指しているのか、それぞれのバックエンドリソースが運用環境のものなのか、サンドボックスのものなのかをどのように識別すれば良いでしょうか。

まず、ローカル環境については amplify_outputs.json を確認することになりますが、このファイルはローカル環境でサンドボックス環境を起動した際に上書きされます。
起動すると次のように表示されます。

% npx ampx sandbox
[Sandbox] Pattern !.vscode/extensions.json found in .gitignore. ".vscode/extensions.json" will not be watched if other patterns in .gitignore are excluding it.
  
  Amplify Sandbox
  
  Identifier:   iwasa.takahito
  Stack:        amplify-amplifyvitereacttemplate-iwasatakahito-sandbox-c16ed1c1a8
  
  To specify a different sandbox identifier, use --identifier


✨  Synthesis time: 0.02s

:

(省略)

:

✨  Total time: 5.04s


[Sandbox] Watching for file changes...
File written: amplify_outputs.json

そして最終ステップまで行くと構成ファイルの内容が上書きされていました。
実行前後のファイルで次のように差分が発生しています。なるほどね。

F51EBEE9-99E2-4637-88B5-33729D2BF6E5_1_105_c.jpeg

で、この構成ファイルにはサンドボックスなのかどうかという情報は含まれていないようでしたが、どのリソースを参照しているのかまでを確認することが出来ます。
コンソールからダウンロードしたファイルと比較することで運用環境のものではないなというのはわかりそうです。

リソースの amplify:deployment-type タグで判別出来る

少し眺めていると、Amplify でデプロイされた AWS リソースについてはamplify:deployment-typeというタグが割り振られていることがわかりました。
次はサンドボックス環境の AppSync リソースです。

CFB38438-1CB4-4ABF-B08C-C72769320DC5.png

amplify:deployment-typesandboxであることから、サンドボックス環境のものであることがわかります。
同様に運用環境リソースのものも確認してみると...

093D0590-2448-4D1F-8DE5-A2EA992AE6B1.png

こちらはbranchという値でした。そしてamplify:branch-nameに対象のブランチ名が設定されています。
運用環境に関わらず、ステージングなどどのブランチのものなのか判断するのに役立てることが出来そうですね。

さいごに

本日は AWS Amplify Gen 2 のバックエンド構成ファイル「amplify_outputs.json」と AWS リソースの関連付けを確認してみました。

多くのリソースが自動作成されるので初見だとよくわからないのですが、構成ファイルやタグなど、アプリケーションと環境・リソースが紐づいている情報は色々とあるのでこのあたりを使って AWS 側からの確認も出来そうです。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.